package bd;

import java.awt.Container;
import java.sql.*;
import javax.swing.*;

/**
 * Classe encarregada da criação da janela, setando todas as configurações que
 * a mesma deve ter
 */
public class frame extends JFrame {

    protected JPanel principal = new JPanel();
    private painelTabelas painelPrincipal;
    private janelaBusca painelBusca;
    private conecta bd;

    /** Construtor da classe frame.
     * É onde as configurações da janela são setadas.
     */
    public frame(conecta conexao) throws ClassNotFoundException, SQLException {
        Container p = getContentPane();
        p.add(this.principal);
        this.bd = conexao;
        this.setVisible(true);
        this.setSize(800, 500);
        this.setLocation(100, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        painelPrincipal = new painelTabelas(bd, this);
        painelBusca = new janelaBusca(bd, this);
        this.principal.add(painelPrincipal);
        painelPrincipal.setVisible(true);
        this.principal.add(painelBusca);
        painelBusca.setVisible(false);
    }

    /** Método que seta a janela principal como invisivel,
     *  cria uma janela de busca e seta-a como visível.
     */
    void mostraBusca(ResultSet retorno) {
        this.painelPrincipal.setVisible(false);
        this.painelBusca.organiza(retorno);
        this.painelBusca.setVisible(true);
    }

    /** Método que seta o botão voltar como visivel,
     *  Limpa os campos e seta o painel de busca como invisível.
     */
    void voltar(){
        this.painelPrincipal.setVisible(true);
        this.painelPrincipal.zeraCondicoes();
        this.painelPrincipal.zeraNovaLinha();
        this.painelBusca.setVisible(false);
    }

    /** Através do método mostraBusca, exibe o resultado de uma busca,
     * dando possibilidade para a remoção de um ou mais dados.
     */
    void BuscaParaRemover(ResultSet retorno) {
        this.mostraBusca(retorno);
        painelBusca.mostraBotoes();
    }

    /** Método que possibilita a remoção de um dado selecionado.
     */
    void remover() {
        this.painelPrincipal.remover();
    }
}
